Controlling the attitude or orientation of spacecraft is useful for many forms of such craft. For instance, a telescope mounted to a satellite may be repositioned to provide an image of an object by reorienting the spacecraft itself. A typical spacecraft is equipped with a group or array of three or more control moment gyroscopes (CMGs). Most spacecraft attitude control techniques involve so-called Eigen axis rotations. Eigen axis rotations are desirable as they are intuitively simple to construct and provide the advantage of reorienting the spacecraft along the shortest circular arc between the starting and desired final attitude angles. The angular error defined by translation from a first orientation to a second orientation can be represented as rotation through a certain angle about a particular fixed axis, referred to as the Eigen axis of the rotation. Once the Eigen axis has been determined, two other axes that need not be aligned with the reference spacecraft body fixed frame, may be selected to form an orthogonal set with the Eigen axis. Since the entire rotation from the initial to the final states is performed about the Eigen axis, the other two axes will always have zero angles to be traversed. Eigen axis rotations are normally implemented as rest-to-rest maneuvers. That is, the rotation is initiated from rest and terminated when the spacecraft is again at rest in the new desired orientation. A maneuver similar to an Eigen axis rotation can be constructed when it is desired to initiate a reorientation maneuver from a non-resting state and/or when it is desired to terminate a reorientation maneuver at a non-resting state. For such non-rest maneuvers, rotations will normally be carried out as simultaneous rotations about three orthogonal axes and designed similarly to an Eigen axis maneuver according to the kinematic differential equations. Conventional spacecraft attitude control systems, however, suffer from singularity problems arising when the torque vector outputs of the CMGs are all aligned in a plane or become collinear. In this condition, the CMG array cannot produce an output torque in a direction orthogonal to the plane or the line. As a result, singularity conditions make it difficult or impossible to perform a maneuver that accurately follows the desired path.
In the past, singularities have been addressed to a certain extent by modification of the attitude control law (CMG steering law), for example, by introducing error torques into the control law, so as to drive the spacecraft slightly away from the desired path. This has the effect of preventing the CMGs from entering singular states. However, this approach requires adjustment to the control law within the closed loop of a spacecraft attitude control system. Moreover, a CMG steering law designed to operate an array of CMGs cannot generally ensure success when one or more CMGs are inoperative. Thus, while it may be possible to avoid singularities by applying appropriate error torques via a CMG steering law, the resulting spacecraft motion is undesirable from the operational point of view because the resulting maneuver profile can be very different from the specified Eigen axis path. In this regard, most spacecraft CMG systems include four or more CMGs. Where four CMGs are provided, and one fails, there is an increased chance that a maneuver cannot be completed as desired because of CMG singularity problems. Moreover, in the failure condition, the geometric structure of the internal singularities can change, thereby significantly inhibiting the possibility of using Eigen axis control logic to reposition the spacecraft. So-called “null-motion” steering techniques have been proposed for reconfiguring a CMG array without producing a net torque output, thereby allowing the CMG array to be steered in such a manner that singular states are avoided. However, the benefits of null-motion steering may become degraded where only three CMGs remain active, such as when one CMG fails, due to introduction of internal singularities that are close to the zero angular momentum state. These internal singularities severely inhibit the effectiveness of an Eigen axis attitude controller because the CMG array can become deadlocked in a singular state. Thus, a need remains for improved techniques and apparatus for controlling spacecraft orientation or attitude by which the aforementioned difficulties can be mitigated or overcome without introduction of additional control components and without adding cost or complexity to existing spacecraft attitude control systems.